﻿using System;
using System.Collections.Generic;
using System.Data.Entity;
namespace Dominio.Core.Repositorios
{
    public interface IRepositorio<TEntity>
     where TEntity : class
    {
        void Agregar(TEntity entidad);
        void ConfirmarCambios();
        DbContext Contexto { get; set; }
        void Eliminar(TEntity entidad);
        void Modificar(TEntity entidad);
        IEnumerable<TEntity> ObtenerTodo();
        IEnumerable<TEntity> Buscar(Func<TEntity, bool> predicado);
        IEnumerable<TEntity> Buscar(Func<TEntity, bool> predicado, int pagina, int tamanioPagina);
        IEnumerable<TEntity> Buscar<S>(System.Linq.Expressions.Expression<Func<TEntity, bool>> predicado,
           int pagina,
           int tamanioPagina,
           System.Linq.Expressions.Expression<Func<TEntity, S>> orderByExpression,
           bool esOrdenAscendente = true);
    }
}
